
 Техническое описание скрипта мониторинга батареи

 Этот Bash-скрипт предоставляет интерактивный интерфейс в терминале для мониторинга состояния батареи, температуры и охлаждения в системах Linux с использованием утилиты `acpi`. Он отображает данные в реальном времени в эстетичной двойной рамке с цветовым кодированием и полосами прогресса, обновляясь каждые 60 секунд (настраиваемый интервал). Ниже приведено подробное описание его функциональности:

 1. **Инициализация и настройка**:
   - Проверяет наличие утилиты `acpi` и выводит инструкцию по установке (`sudo apt install acpi`), если она отсутствует.
   - Очищает терминал и скрывает курсор (функция `clear_box`) с использованием ANSI-кодов.
   - Устанавливает ловушку (`trap`) для восстановления курсора и очистки экрана при прерывании (`Ctrl+C`, SIGINT).
   - Задаёт интервал обновления по умолчанию в 60 секунд (переменная `interval`).

 2. **Основной макет отображения (`double_line_box`)**:
   - Создаёт рамку с двойными линиями (42 строки, 83 столбца) с использованием Unicode-символов (╔, ═, ║ и т.д.).
   - Цвет фона динамически меняется в зависимости от уровня заряда батареи:
     - 100%: Жёлтый (43)
     - 96–99%: Синий (44)
     - 92–95%: Фиолетовый (45)
     - 84–91%: Красный (41)
     - Ниже 84%: Жёлтый (43)
   - Включает горизонтальные разделители для структурирования данных.

 3. **Секции информации**:
   - **Заголовок (`title_box`)**: Анимированно отображает текст "*** Linux OS acpi The state of the battery ***" с задержкой 0.01 секунды.
   - **Инструкция (`ifo_box`)**: Указывает "Click 'Ctrl+C' for exit" для выхода.
   - **Версия ACPI (`acpi_box`)**: Показывает версию утилиты `acpi` (например, "1.7").
   - **Интервал обновления (`update_box`)**: Отображает текущий интервал обновления (например, "01 minutes 00 seconds").
   - **Обнаружение батареи (`bat_box`)**: Указывает статус батареи ("Detected" или "Undetected") с зелёным или красным цветом.
   - **Состояние батареи (`line_box`)**: Показывает состояние батареи ("Charging", "Discharging", "Full" или "Unknown") с цветовым выделением.
   - **Оставшееся время (`time_box`)**: Отображает оставшееся время работы батареи (например, "02:30:00" или "N/A").
   - **Уровень заряда (`battery_progress_bar`)**: Рисует полосу прогресса из 50 символов (▓ для заполненной части, ░ для пустой) с процентом заряда.
   - **Скорость разряда (`check_battery_rate`)**: Указывает "Rate information unavailable", если данные недоступны.
   - **Состояние адаптера (`get_adapter_status`)**: Показывает состояние питания (например, "Adapter 0: on-line").
   - **Температура (`get_thermal1_status`, `get_thermal2_status`)**: Отображает температуры Thermal 0 и Thermal 1 (например, "45.0 degrees C").
   - **Охлаждение (`get_cooling`)**: Перечисляет состояния устройств охлаждения (например, "Cooling 0: Processor 0 of 10") с префиксом "Battery" для первой строки.
   - **Здоровье батареи (`get_battery_health`)**: Показывает проектную ёмкость, последнюю полную ёмкость, текущий процент и износ батареи (например, "Design capacity: 5000 mAh", "Battery wear: 15%").
   - **Полоса здоровья (`progress_bar`)**: Визуализирует здоровье батареи в виде полосы прогресса из 50 символов с процентом.

 4. **Система предупреждений (`alert_line_box`, `alert_info`)**:
   - Отображает рамку с текстом "The computer is about to shut down!" с анимацией (задержка 0.1 секунды).
   - Цвет фона: Красный (41) при уровне заряда ≤91%, чёрный (40) при >91%.

 5. **Управление питанием**:
   - Проверяет уровень заряда каждые `interval` секунд (по умолчанию 60).
   - При уровне заряда ≤84% (переменная `THRESHOLD`) немедленно выключает систему командой `shutdown now`.

 6. **Ключевые особенности**:
   - Цветовое кодирование: зелёный для нормального состояния, красный для ошибок или критических уровней, жёлтый для текста и рамок.
   - Прогресс-бары для уровня заряда и здоровья батареи (50 символов, с округлением вверх).
   - Анимация текста для заголовка и предупреждений.
   - Настраиваемый интервал обновления через переменную `interval`.

 7. **Зависимости**:
   - Требуется утилита `acpi` для получения данных о батарее, адаптере, температуре и охлаждении.
   - Использует стандартные инструменты: `awk`, `grep`, `tr`, `sleep`, `tput`.

 8. **Использование**:
   - Запуск: `./имя_скрипта.sh` в терминале.
   - Выход: `Ctrl+C` для завершения с восстановлением терминала.

 Этот скрипт идеально подходит для пользователей Linux, которым нужен детализированный и визуально привлекательный мониторинг состояния батареи с функцией автоматического выключения при низком заряде.

 notabug: https://notabug.org/Grannik/bAcpi
 gitea: https://demo.gitea.com/Grannik/bAcpi
 gogs: https://try.gogs.io/Grannik5/bAcpi
